package ar.com.mercadolibre.oportunidades;

import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import ar.com.mercadolibre.oportunidades.adapters.CategoriaAdapter;
import ar.com.mercadolibre.oportunidades.entidades.Categoria;
import ar.com.mercadolibre.oportunidades.tareas.TareaDescargaCategorias;
import ar.com.mercadolibre.oportunidades.tareas.TareaLanzarNotificacionDummy;

public class ActividadBusqueda extends Activity{

	private EditText articulo;
	private EditText precioMin;
	private EditText precioMax;
	private CheckBox condicionNuevo;
	private CheckBox condicionUsado;
	private Button botonBuscar;
	private Spinner categoria;

	private final String BUSQUEDA_ARTICULO = "q=";
	private final String BUSQUEDA_CATEGORIA = "category=";
	private final String BUSQUEDA_CONDICION = "condition=";
	private final String BUSQUEDA_PRECIO = "price=";
	private final String BUSQUEDA_LIMITE_RESULTADOS = "limit=";
	private final String SEPARADOR = "&";

	private OnClickListener buscar = new OnClickListener() {

		@Override
		public void onClick(View v) {

			String query = formarQuery();

			Intent intent = new Intent(ActividadBusqueda.this, ActividadResultados.class);
			intent.putExtra("query", query);
			startActivity(intent);

		}
	};


	@Override
	protected void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);
		setContentView(R.layout.actividad_busqueda);
		getActionBar().hide();

		this.categoria = (Spinner) findViewById(R.id.selectorCategorias);
		new TareaDescargaCategorias(ActividadBusqueda.this).execute((Void)null);

		this.articulo = (EditText) findViewById(R.id.articuloBuscado);
		this.precioMin = (EditText) findViewById(R.id.precioMin);
		this.precioMax = (EditText) findViewById(R.id.precioMax);
		this.condicionNuevo= (CheckBox) findViewById(R.id.checkNuevo);
		this.condicionUsado= (CheckBox) findViewById(R.id.checkUsado);
		this.botonBuscar = (Button) findViewById(R.id.buscar);

		this.condicionNuevo.setChecked(true);
		this.condicionUsado.setChecked(true);

		this.botonBuscar.setOnClickListener(buscar);

	}


	protected String formarQuery() {

		String articuloDescr = articulo.getText().toString();
		String precioMinDescr = precioMin.getText().toString();
		String precioMaxDescr = precioMax.getText().toString();

		String categoriaId = "";
		
		if (categoria.getSelectedItem() != null) {
			
			categoriaId = ( (Categoria) categoria.getSelectedItem() ).getId();
			
		}
		
		String condicion = "";

		if (this.condicionNuevo.isChecked() && !this.condicionUsado.isChecked()) {
			condicion = "new";
		}

		else if (!this.condicionNuevo.isChecked() && this.condicionUsado.isChecked()) {
			condicion = "used";
		}

		StringBuilder sb = new StringBuilder();

		if ( !articuloDescr.isEmpty() ) {

			sb.append(this.BUSQUEDA_ARTICULO);
			sb.append(articuloDescr);

		}

		if ( !categoriaId.isEmpty() ) {

			sb.append(this.SEPARADOR);
			sb.append(this.BUSQUEDA_CATEGORIA);
			sb.append(categoriaId);

		}

		if ( !condicion.isEmpty() ) {

			sb.append(this.SEPARADOR);
			sb.append(this.BUSQUEDA_CONDICION);
			sb.append(condicion);

		}

		sb.append(this.SEPARADOR);

		if ( !precioMinDescr.isEmpty() && precioMaxDescr.isEmpty() ) {

			sb.append(this.BUSQUEDA_PRECIO);
			sb.append(precioMinDescr);
			sb.append("-");
			sb.append("1000000000");

		}

		else if ( precioMinDescr.isEmpty() && !precioMaxDescr.isEmpty() ) {

			sb.append(this.BUSQUEDA_PRECIO);
			sb.append("0");
			sb.append("-");
			sb.append(precioMaxDescr);

		}

		else if ( !precioMinDescr.isEmpty() && !precioMaxDescr.isEmpty()) {

			sb.append(this.BUSQUEDA_PRECIO);
			sb.append(precioMinDescr);
			sb.append("-");
			sb.append(precioMaxDescr);

		}

		sb.append(this.SEPARADOR);
		sb.append(BUSQUEDA_LIMITE_RESULTADOS);
		sb.append("6");
		sb.append(this.SEPARADOR);
		sb.append("sort=relevance");

		return sb.toString();

	}


	public void setCategorias(List<Categoria> result) {

		Categoria [] categorias = new Categoria [result.size()];

		for (int i = 0 ; i < result.size() ; i++) {
			categorias [i] = result.get(i);
		}

		CategoriaAdapter adapter = 
				new CategoriaAdapter(ActividadBusqueda.this,R.layout.simple_spinner_item , categorias);
		adapter.setDropDownViewResource(R.layout.simple_spinner_item);
		categoria.setAdapter(adapter);
	}

}